A client device has an energy source. An energy source can be one or more batteries, capacitive storage systems, or power provided by an AC/DC converter from an external power source. A client device can have a variety of subsystems that consume energy. Subsystems can include one or more processors, a display, networking components, an audio system, or a WiFi module and a cellular module. An application running on the client device utilizes one or more of these subsystems. Application developers will sometimes disclose an expected number of hours that an application can be used by a client device during a single charge of the client device.
However, client devices have different battery sizes. Thus application usage time per charge can vary by device type. In addition, an application can be used under a wide variety of physical conditions such as ambient light or signal strength for WiFi or cellular connectivity. An application may also be used at different performance levels, such as audio volume, display brightness, or processing power for different game difficulty levels. Further, multiple applications can be running on a client device at a same time utilizing one or more of the same subsystems. Moreover, a developer may have a defect (“bug”) in the application that consumes energy that provides no utility to the user. For example, a GPS system may be running in the background for a navigation application, updating the user's location even when the user is not navigating. Thus, the GPS background updates consume energy without providing utility to the user.